<template>
  <el-row :gutter="20" class="report-content">
    <!-- 开业辅导综合统计（Guidance 组件） -->
    <el-col :span="24">
      <guidance-statistics-report
        ref="guidanceStatisticsReport"
        :management-area-options="managementAreaOptions"
        @data-updated="handleGuidanceDataUpdated"
        @metrics-updated="handleGuidanceMetricsUpdated"
        @filter-change="handleGuidanceFilterChange"
        @refresh="handleGuidanceRefresh"
      ></guidance-statistics-report>
    </el-col>
    <el-col :span="24">
      <!-- 辅导师维度统计（开业辅导） -->
      <teacher-guidance-statistics-report
        ref="teacherGuidanceReport"
        :management-area-options="managementAreaOptions"
        @data-updated="handleTeacherGuidanceDataUpdated"
        @filter-change="handleTeacherGuidanceFilterChange"
        @refresh="handleTeacherGuidanceRefresh"
      ></teacher-guidance-statistics-report>
    </el-col>
    <el-col :span="24">
      <!-- 校区投保率统计（保险报表） -->
      <insurance-report ref="insuranceReport" :management-area-options="managementAreaOptions"></insurance-report>
    </el-col>
  </el-row>
</template>

<script>
import GuidanceStatisticsReport from '@/views/report/components/GuidanceStatisticsReport.vue'
import TeacherGuidanceStatisticsReport from '@/views/report/components/TeacherGuidanceStatisticsReport.vue'
import InsuranceReport from '@/views/report/components/InsuranceReport.vue'
import { DICTIONARY_TYPES, getEnabledDictionaryData } from '@/utils/dictionaryConstants'

export default {
  name: 'OpeningGuidanceAndInsuranceReport',

  components: {
    GuidanceStatisticsReport,
    TeacherGuidanceStatisticsReport,
    InsuranceReport
  },

  data() {
    return {
      // 管理区域字典（供子组件列构建使用）
      managementAreaOptions: [],
      // 页面加载状态（保留扩展点）
      loading: false
    }
  },

  mounted() {
    // 加载管理区域字典（北京时间记录）
    this.loadFilterDictionaries()
  },

  methods: {
    /**
     * 加载管理区域数据字典（供子组件列构建使用）
     * - 仅保留启用项；失败时提示并回退为空数组
     */
    async loadFilterDictionaries() {
      try {
        this.managementAreaOptions = await getEnabledDictionaryData(DICTIONARY_TYPES.COMPANY)
      } catch (error) {
        this.managementAreaOptions = []
        this.$message.error('管理区域选项加载失败')
      }
    },

    /**
     * Guidance 组件数据更新事件扩展点
     * @param {Object} data 子组件回传的最新数据快照
     */
    handleGuidanceDataUpdated(data) {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * Guidance 组件筛选条件变化事件扩展点
     * @param {Object} filterData 最新筛选条件对象
     */
    handleGuidanceFilterChange(filterData) {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * Guidance 组件刷新事件扩展点
     */
    handleGuidanceRefresh() {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * 子组件数据更新事件扩展点
     * @param {Object} data 子组件回传的最新数据快照
     */
    handleTeacherGuidanceDataUpdated(data) {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * 子组件指标更新事件扩展点
     * @param {Object} metrics 子组件计算后的指标数据
     */
    handleGuidanceMetricsUpdated(metrics) {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * 子组件筛选条件变化事件扩展点
     * @param {Object} filterData 最新筛选条件对象
     */
    handleTeacherGuidanceFilterChange(filterData) {
      // 保留扩展点，移除冗余调试日志
    },

    /**
     * 子组件刷新事件扩展点
     */
    handleTeacherGuidanceRefresh() {
      // 保留扩展点，移除冗余调试日志
    }
  }
}
</script>

<style lang="scss" scoped>
.report-content {
  margin-bottom: 20px;
}
</style>
